﻿//流程

//使用 #函数类型 声明api原型指针
#函数类型 整型(WINAPI * 信息框声明)(HWND 窗口句柄, 常量 字符型 * 内容, 常量 字符型 * 标题, 正整型 uType)
//声明变量储存原始地址
信息框声明 g_hookFunc = (信息框声明)GetProcAddress(取模块句柄("User32.dll"),A"MessageBoxW")

//实现hook后步骤
函数 整型 WINAPI HOOK信息框(HWND 窗口句柄, 常量 字符型* 内容, 常量 字符型* 标题, 正整型 uType)
	调试输出("原始内容:", 内容)
	//使用之前存储的原始地址调用,如果直接调用被hook的api会引起回环错误
	g_hookFunc(窗口句柄,"HOOK成功",标题,uType)
	返回 0

//使用 HOOK_装载HOOK((void**)&g_hookFunc,HOOK信息框) 完成hook (g_hookFunc为上面的存储地址, HOOK信息框 为接收hook的地址)

类 我的主窗口类
	[绑定信息] //IDE生成的UI绑定信息(UI变量,事件), 支持手动修改, 可收缩隐藏
		[按钮类, _按钮1, "按钮1"]
			[XE_BNCLICK, 事件_按钮1_点击, 0]
		[按钮类, _按钮3, "按钮3"]
			[XE_BNCLICK, 事件_按钮3_点击, 0]
		[按钮类, _按钮2, "按钮2"]
			[XE_BNCLICK, 事件_按钮2_点击, 0]
	窗口句柄  _句柄
	//窗口类初始化, 自动处理关联的布局文件及绑定变量和注册事件
	函数 整型 运行(文本型 窗口布局文件 = "main.xml", 炫彩句柄 父句柄=0)
		窗口_显示(_句柄, TRUE)
		返回 0
	函数 整型  事件_按钮1_点击(逻辑型* 是否拦截)
		//安装HOOK
		HOOK_装载HOOK((void**)&g_hookFunc,HOOK信息框)
		返回 0
	函数 整型  事件_按钮2_点击(逻辑型* 是否拦截)
		//卸载HOOK
		HOOK_卸载HOOK((void**)&g_hookFunc)
		返回 0
	函数 整型  事件_按钮3_点击(逻辑型* 是否拦截)
		系统消息框(窗口_取HWND(_句柄), "这是信息框", "测试", 0)
		返回 0


函数 整型 入口函数_窗口()
	炫彩_初始化(TRUE)
	炫彩_加载资源文件("resource.res")
	
	我的主窗口类  我的主窗口
	我的主窗口.运行()

	炫彩_运行()
	炫彩_退出()
	返回 0

